A friend of mine choose for $reasons to install the latest OpenSuSE 42.2 release as his new
laptop operating system. It's been a while that I had contact with the SuSE Linux distribution.
Must be around 12 years or so. The unsual part here is that I've to support a somewhat eccentric,
but mostly ordinary user of computers. And to my surprise it's still hard to just plug in your
existing stuff and expect it work. I've done so many dirty things to this installation in
the last three days, my system egineering heart is bleeding.
printing with a Canon Pixma iP100 printer
This is a small portable Canon printer, about four years old. It provides a decent quality
and its main strength is that it's small and really portable. Sadly the gutenprint driver
just pushes through a blank page. No ink wasted on it at all.
So the only reasonable other choice was a four year old binary rpm package
provided by
Canon. It has a
file dependency on "libtiff.so.3" which is no longer available in recent GNU/Linux
distributions. So I cheated and
- unpacked the tarball
- installed the rpm from the "packages" folder
zypper install cnijfilter-common-3.70-1.x86_64.rpm cnijfilter-ip100series-3.70-1.x86_64.rpm
... and choose to ignore the missing file dependency on libtiff.so.5.
ln -s /usr/lib64/libtiff.so /usr/lib64/libtiff.so.5
- re-ran the ./install.sh which registered the printer with cups and does whatever else
magic is included in 1906 lines of shell.
To my surprise this driver still works and provides the expected quality. Though it's just
a question of time until this setup will break. Be it an incompatible ABI change in libtiff
or another lib in use by those Canon provided tools.
QGIS and gdal with ECW support
While the printer stuff is a rather common use case, having a map viewer for map files in the
ECW format is the eccentric
part. I found some hints on stackoverflow and subsequently
https://trac.osgeo.org/gdal/wiki/ECW
that a non-free library is required and a specific build of
gdal.
Then
QGIS should be able to work with ECW files. Lucky us there
is at least a OpenSuSE repository for gdal and QGIS. So I did the following:
zypper addrepo http://download.opensuse.org/repositories/Application:/Geo/openSUSE_Leap_42.2/Application:Geo.repo
zypper install qgis
Then I had to download the non-free ECW SDK from
http://download.hexagongeospatial.com/downloads/erdas-ecw-jp2-sdk-v5.3-%28linux%29 - you'll and up with a '.bin' installer file. The installation process
left me with "ERDAS-ECW_JPEG_2000_SDK-5.3.0" folder in my $HOME. I moved that one to /opt. Next
step is adding the library to the ldconfig search path.
echo "/opt/ERDAS-ECW_JPEG_2000_SDK-5.3.0/Desktop_Read-Only/lib/x64/release/" > /etc/ld.so.conf.d/ecw.conf; ldconfig
Now it was "just" about rebuild gdal with ECW support. So I downloaded the required source packages
with "zypper source-install gdal", edited the spec somewhere in "/usr/src/" to make the following
modifications
--with-ecw=/opt/ERDAS-ECW_JPEG_2000_SDK-5.3.0/Desktop_Read-Only
added to the "./configure" invocation. And somewhere at the top we had to relax the
requirement that all installed files have to be referenced inside the package.
%define _unpackaged_files_terminate_build 0
As a last step I had to "rpmbuild -ba" the package and force the installation via zypper
once more, because this time we have a file depedency on the libecw stuff and it's obviously
not listed in the rpm database. Last but not least I tried to put the gdal build on hold with
zypper addlock gdal libgdal20
to ensure it's not removed on the next update.
Other non-free tools
Beside of those two issues I had to install a range of other non-free tools, but currently
they work without further issues or modifications. One is Teamviewer (i686 multiarch rpm) and
the other one is XnViewMP. XnView is also able to show ECW files, but only the smaller ones.
It crashes on bigger ones but that's also the case on Windows. Then there is also (required
by some Italian map related websites) the ugly Adobe Flash Plugin for Firefox, but that one
is sadly still a widespread issue. We also tried to try out the nvidia graphic drivers but
at the moment we could only get the build in Intel card to work. Usually the preferred solution
from my point of view but sometimes we see rendering glitches and I'm not sure if it's the
driver or something else.
my personal take away
I hate to admit it but it's nothing extraordinary that was requested here. But still
it took me the better part of two evenings to figure everything out. And even now it's
not properly integrated and doomed to fail any day due to various updates and changes
in the surounding ecosystem. I've full sympathy for every average user that would give
up after two hours of research and try&error on this journey.
For the printer drivers I'm happy to blame Canon. The printer situation as a whole
improved from my point of view during the last decade, but it's still a pain in the
ass with the very short shelf life you usually see with consumer models.
For the ECW case one could discuss if it would be legally possible and helpful to do
ugly dlopen() stuff to dynamcially load the shared libs. But then again someone has
to make his hands dirty during the build and discussions about the legal use of header
files will be the next chapter (hello Oracle). It's just ugly. Actually I know too little
about the world of image formats to judge if someone has a good reason to keep this
format commercial or not. From my personal point of view it's not useful and maybe
even morally wrong.
Technically one could argue if it would make sense to keep a local copy of the
gdal build in "/opt" and start QGIS with a modified library path to prefer the
private gdal build. Not sure if that is any better.
On the other hand there are evolving mechanism like flatpack that would ease the handling of
such situations. Buth then again we would be catering non-free software. It feels a lot
like giving up.
While my private working environment is except for firmware blobs free, I now created
for someone a real "FrankenSuSE" to satisfy his everyday needs. On the one hand we
now have another mostly satisfied user of a mostly free operating system. On the other
hand that was only possible by adding a vast amount of non-free software. For sure
we did not win the war, I'm not even sure if we've won a single battle here. It's
just frustrating to see what is required to get someone up and running. With my personal
attitude towards open source software it even feels wrong to invest so much time into
fiddling with non-free components.
What is still missing
We currently lack an image viewer that allows us to print only a selection of
an image, which is useful to print parts of a map. That usually works with XnView
on Windows but does not work with the Linux version at the moment. I also tried gwenview
and geeqie and had the same issue. Not sure if it's maybe a bug in XnView or one of the
Qt parts (gwenview is also Qt based). I did not research that yet.
Update: I spent quite some time looking into open bug reports for geeqie and gwenview.
Seems the feature to print only a section of an image is something new. I've created
#374299 (gwenview) and
#457 (geeqie).
For XnView I expect it's a difference between XnViewMP (the portable version) and
the Windows only XnView Classic. Needs to be clarified and it might be worth to try
XnView Classic with wine. Maybe printing with wine via cups works, I found at least
some results for it on the internet.